package com.tms.quartz.service;

import org.quartz.CronTrigger;

import java.util.Map;

/**
 * 触发器服务类
 *
 * @author jackie
 * @date 2020年6月30日
 */
public interface TriggerService {

    /**
     * 添加一个触发器
     *
     * @param triggerName  触发器名称
     * @param triggerGroup 触发器分组
     * @param cron         cron表达式
     * @param param        触发器map参数
     * @return trigger，失败返回null
     */
    CronTrigger addTrigger(String triggerName, String triggerGroup, String cron, Map<String, String> param);

    /**
     * 暂停指定触发器
     *
     * @param triggerName  触发器名称
     * @param triggerGroup 触发器分组
     * @return 成功返回true，失败返回false
     */
    boolean pauseTrigger(String triggerName, String triggerGroup);

    /**
     * 恢复指定触发器
     *
     * @param triggerName  触发器名称
     * @param triggerGroup 触发器分组
     * @return 成功返回true，失败返回false
     */
    boolean resumeTrigger(String triggerName, String triggerGroup);

    /**
     * 移除指定触发器
     *
     * @param triggerName  触发器名称
     * @param triggerGroup 触发器分组
     * @return 成功返回true，失败返回false
     */
    boolean removeTrigger(String triggerName, String triggerGroup);

    /**
     * 启动所有任务触发器
     */
    void startAllTriggers();

    /**
     * 关闭所有任务触发器
     */
    void shutdownAllTriggers();

}
